// 商品的 pinia 状态管理文件

import { defineStore } from 'pinia' // 导入 pinia
import { getProducts, IProduct } from "../api/shop" // 导入 IProduct 类型

// 初始化 pinia 实例对象
const useProductStore = defineStore('product', {
  state: () => {
    return {
      productList: [] as IProduct[] // 商品列表数据
    }
  },

  getters: {},

  actions: {
    // 1、封装的请求数据的方法
    async getProductList() {
      // 发送请求，给 productList 赋值
      this.productList = await getProducts()
    },
    // 2、封装去除商品库存的方法
    decrementProduct(product: IProduct) {
      // 获取商品列表中的商品
      const result = this.productList.find(item => item.id === product.id)

      if(result && result.inventory >= 1) {
        // 如果商品存在，并且商品数量不为 0，让其数量 -1
        result.inventory--
      }
    }
  }
})

export default useProductStore // 导出